<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>xilnvm: xnvm_efuse.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">xilnvm
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;"
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('versal__gen_2versal_2server_2xnvm__efuse_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">versal_gen/versal/server/xnvm_efuse.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This file contains eFuse functions of xilnvm library and provides the access to program eFUSE. </p>
<pre>
MODIFICATION HISTORY:</pre><pre>Ver   Who  Date        Changes
</p>
<hr/>
<p>
1.0   kal  08/16/2019 Initial release
2.0   kal  02/27/2020 Added eFuse wrapper APIs to program AES keys, PPK hash,
                      Revocation ID, SecCtrl eFuses, Puf HD and APIs to read
                      eFuse Cache values.
      kal  03/03/2020 Added protection eFuse row programming.
      kal  05/04/2020 Restructured the code to have single interface
                XNvm_EfuseWrite for eFuse programming.
                Removed usage of conversion APIs and achieved the same
                logic with bitwise operators.
                Reduced number of Cache reloads.
2.1   rpo  06/06/2020 Support added to write glitch configuration data.
      rpo  06/08/2020 Support added to program eFUSE halt boot bits to stop
                      at ROM stage.
      kal  07/09/2020 Fixed bugs in PUF Syndrome data read, ROW_58 protection
                      Row programming.
                      Read provision is expanded to all Misc Ctrl eFuses.
      am   08/19/2020 Resolved MISRA C violations.
      kal  09/03/2020 Fixed Security CoE review comments
      am   10/13/2020 Resolved MISRA C violations
2.2   am   11/23/2020 Resolved MISRA C and Coverity warnings
        kal  12/23/2020 Removed unused variables
      kal  01/07/2021   Added support to SecurityMisc1, BootEnvCtrl,MiscCtrl
                and remaining eFuses in SecCtrl eFuse rows programming
                and reading
      kal  01/25/2021   Initialized variables to more secure state
      kal  01/25/2021 Fix cache logic error in XNvm_EfuseReadCacheRange API
2.3   kal  02/22/2021 Add redundancy to loop in XNvm_EfusePgmAndVerifyRows
      kal  02/26/2021 Fix all SW-BP-ZEROIZE related review comments
      kal  03/02/2021 Add Environmental monitoring support before eFuse
                programming
      kal  04/08/2021 Fix SW-BP-INPUT-VALID related review comments.
      kal  04/14/2021 Add a validation check for RowCount in
                XNvm_EfusePgmAndVerifyRows API
      kal  04/15/2021 Fix XNvm_EfuseSetReadMode - Blind writes
      kal  04/27/2021 Reset status to failure when status is used more than
                once in security critical places
      kal  04/30/2021 Added a warning for user to re-boot the system when
                CACHE_ERROR
      kpt  05/06/2021 Corrected check to program SafetyMissionEn bit
      kal  05/07/2021 Reset the read mode after eFuse operations are done
      kpt  05/12/2021 Added check to set environmental disable flag and
                      sysmon instance for individual write API's
      kpt  05/20/2021 Added support for programming PUF efuses as
                      general purpose data
      am   05/22/2021 Resolved MISRA C violations
2.4   kal  07/13/2021 Fixed doxygen warnings
      am   07/07/2021 Fixed 2021.1 review comments
      kal  07/25/2021 Moved XNvm_Printf definition to xnvm_def.h
      kpt  08/03/2021 Added XNvm_EfuseResetReadMode in
                      XNvm_EfuseWritePufAsUserFuses
      kal  08/13/2021 Add most restrictive range check for device temparature
                      before eFuse programming
      har  09/16/2021 Removed magic numbers in XNvm_EfuseWriteSecCtrl function
                      Check for Trim2 instead of Trim3 before programming
                      Protection bit 37
2.5   har  11/17/2021 Fix Blind Write in XNvm_EfuseDisableProgramming and
                      XNvm_EfuseResetReadMode
      har  01/03/2022 Renamed NumOfPufFuses as NumOfPufFusesRows
      har  11/22/2021 Added an error case and full range check case for switch
                      in XNvm_EfuseTemparatureCheck and XNvm_EfusePmcVoltageCheck
                      Added checks for return value for
                      <a class="el" href="group__xnvm__util__apis.html#ga0210acfa1906f9a6d4c462ca0c214552" title="This function disables programming mode of eFUSE controller. ">XNvm_EfuseDisableProgramming()</a> and <a class="el" href="group__xnvm__util__apis.html#gadf9884d1248299bbcab9c2eb75f3c12d" title="This function disables Margin Read mode of eFUSE controller. ">XNvm_EfuseResetReadMode()</a>
      am   02/28/2022 Resolved MISRA C violations
3.0   kal  07/12/2022 Moved common code to <a class="el" href="xnvm__efuse__common_8c.html" title="This file contains eFuse functions of xilnvm library and provides the access to program eFUSE...">xnvm_efuse_common.c</a> in common directory
      kal  08/02/2022 Fix Row37 protection check in XNvm_EfuseProtectionChecks API
      kpt  08/03/2022 Added volatile keyword to avoid compiler optimization of loop redundancy check
      dc   08/29/2022 Changed u8 to u32 type
3.1   skg  10/25/2022 Added in body comments for APIs
      skg  12/07/2022 Added Additional PPKs hash and invalid support
      kal  03/07/2023 Added volatile keyword to avoid compiler optimization in
                      XNvm_EfuseWriteSecMisc1Fuses
3.2   kum 04/11/2023  Moved common code to <a class="el" href="xnvm__efuse__common_8c.html" title="This file contains eFuse functions of xilnvm library and provides the access to program eFUSE...">xnvm_efuse_common.c</a>
      kpt  07/26/2023 Add missing else check in XNvm_EfuseReadPpkHash
3.3   har 12/04/2023  Added support for HWTSTBITS_DIS and PMC_SC_EN efuse bits
      vss 12/31/2023  Added support for Program the eFuse protection bits only once
      vss 02/23/2024    Added IPI support for eFuse read and write
      kpt 03/28/2024  Updated validation to allow additional PPK programming along with
                      PPK0/1/2 and additional ppk enable bit
      ng   12/12/2023 Fixed doxygen grouping</pre><pre></pre> </div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">eFuse macro definitions</div></td></tr>
<tr class="memitem:gae90a96afb82790626728eb3e7b0f8c41"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gae90a96afb82790626728eb3e7b0f8c41">XNVM_EFUSE_CRC_AES_ZEROS</a>&#160;&#160;&#160;(0x6858A3D5U)</td></tr>
<tr class="memdesc:gae90a96afb82790626728eb3e7b0f8c41"><td class="mdescLeft">&#160;</td><td class="mdescRight">&lt; CRC for Aes zero key  <a href="group__xnvm__efuse__server__apis.html#gae90a96afb82790626728eb3e7b0f8c41">More...</a><br/></td></tr>
<tr class="separator:gae90a96afb82790626728eb3e7b0f8c41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga275db079af1fd172b9939cc10053a135"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga275db079af1fd172b9939cc10053a135">XNVM_EFUSE_TOTAL_NUM_OF_ROWS</a>&#160;&#160;&#160;(768U)</td></tr>
<tr class="memdesc:ga275db079af1fd172b9939cc10053a135"><td class="mdescLeft">&#160;</td><td class="mdescRight">PPK hash number of eFuse rows.  <a href="group__xnvm__efuse__server__apis.html#ga275db079af1fd172b9939cc10053a135">More...</a><br/></td></tr>
<tr class="separator:ga275db079af1fd172b9939cc10053a135"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga304d7fadfa39830e9cc0cfd70acce076"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga304d7fadfa39830e9cc0cfd70acce076">XNVM_EFUSE_TOTAL_PPK_HASH_ROWS</a>&#160;&#160;&#160;(XNVM_EFUSE_PPK_HASH_NUM_OF_ROWS * 3U)</td></tr>
<tr class="memdesc:ga304d7fadfa39830e9cc0cfd70acce076"><td class="mdescLeft">&#160;</td><td class="mdescRight">eFuse word length  <a href="group__xnvm__efuse__server__apis.html#ga304d7fadfa39830e9cc0cfd70acce076">More...</a><br/></td></tr>
<tr class="separator:ga304d7fadfa39830e9cc0cfd70acce076"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga187d1e419e66b1ba10a3a73debd9904d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga187d1e419e66b1ba10a3a73debd9904d">XNVM_EFUSE_WORD_LEN</a>&#160;&#160;&#160;(4U)</td></tr>
<tr class="memdesc:ga187d1e419e66b1ba10a3a73debd9904d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default secure value for 32 bit.  <a href="group__xnvm__efuse__server__apis.html#ga187d1e419e66b1ba10a3a73debd9904d">More...</a><br/></td></tr>
<tr class="separator:ga187d1e419e66b1ba10a3a73debd9904d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac098113c35ee3bd002d2ba7c1e7db74e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gac098113c35ee3bd002d2ba7c1e7db74e">XNVM_EFUSE_SEC_DEF_VAL_ALL_BIT_SET</a>&#160;&#160;&#160;(0xFFFFFFFFU)</td></tr>
<tr class="memdesc:gac098113c35ee3bd002d2ba7c1e7db74e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sysmon VCCPMC Amux ctrl value.  <a href="group__xnvm__efuse__server__apis.html#gac098113c35ee3bd002d2ba7c1e7db74e">More...</a><br/></td></tr>
<tr class="separator:gac098113c35ee3bd002d2ba7c1e7db74e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab9172ab3c395b1c87cc6c243eb5b5e41"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gab9172ab3c395b1c87cc6c243eb5b5e41">XNVM_EFUSE_SYSMON_VCCPMC_AMUX_CTRL</a>&#160;&#160;&#160;(0x0bU)</td></tr>
<tr class="memdesc:gab9172ab3c395b1c87cc6c243eb5b5e41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sysmon VCCPMC Abus sw1 value.  <a href="group__xnvm__efuse__server__apis.html#gab9172ab3c395b1c87cc6c243eb5b5e41">More...</a><br/></td></tr>
<tr class="separator:gab9172ab3c395b1c87cc6c243eb5b5e41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gada30b94ac5b0e038f2689e45f26c296b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gada30b94ac5b0e038f2689e45f26c296b">XNVM_EFUSE_SYSMON_VCCPMC_ABUS_SW1</a>&#160;&#160;&#160;(0x00U)</td></tr>
<tr class="memdesc:gada30b94ac5b0e038f2689e45f26c296b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sysmon VCCPMC Abus sw0 value.  <a href="group__xnvm__efuse__server__apis.html#gada30b94ac5b0e038f2689e45f26c296b">More...</a><br/></td></tr>
<tr class="separator:gada30b94ac5b0e038f2689e45f26c296b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga93915a19e1bccc48bbc4e9d6fef6c379"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga93915a19e1bccc48bbc4e9d6fef6c379">XNVM_EFUSE_SYSMON_VCCPMC_ABUS_SW0</a>&#160;&#160;&#160;(0x02U)</td></tr>
<tr class="memdesc:ga93915a19e1bccc48bbc4e9d6fef6c379"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sysmon VCCPMC mode value.  <a href="group__xnvm__efuse__server__apis.html#ga93915a19e1bccc48bbc4e9d6fef6c379">More...</a><br/></td></tr>
<tr class="separator:ga93915a19e1bccc48bbc4e9d6fef6c379"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4eddd347eb370c94797d1b0074f95e99"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga4eddd347eb370c94797d1b0074f95e99">XNVM_EFUSE_SYSMON_VCCPMC_MODE</a>&#160;&#160;&#160;(0x00U)</td></tr>
<tr class="memdesc:ga4eddd347eb370c94797d1b0074f95e99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sysmon number of measurement registers.  <a href="group__xnvm__efuse__server__apis.html#ga4eddd347eb370c94797d1b0074f95e99">More...</a><br/></td></tr>
<tr class="separator:ga4eddd347eb370c94797d1b0074f95e99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga43be5c3424b5e1df2cc040e69447292b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga43be5c3424b5e1df2cc040e69447292b">XNVM_EFUSE_SYSMON_NUM_MEASURE_REGS</a>&#160;&#160;&#160;(0x20U)</td></tr>
<tr class="memdesc:ga43be5c3424b5e1df2cc040e69447292b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sysmon number of supplies per flag.  <a href="group__xnvm__efuse__server__apis.html#ga43be5c3424b5e1df2cc040e69447292b">More...</a><br/></td></tr>
<tr class="separator:ga43be5c3424b5e1df2cc040e69447292b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga75a6f7f12d78cdad69940f49e27811d3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga75a6f7f12d78cdad69940f49e27811d3">XNVM_EFUSE_SYSMON_NUM_SUPPLIES_PER_FLAG</a>&#160;&#160;&#160;(32U)</td></tr>
<tr class="memdesc:ga75a6f7f12d78cdad69940f49e27811d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sysmon Psv timeout value.  <a href="group__xnvm__efuse__server__apis.html#ga75a6f7f12d78cdad69940f49e27811d3">More...</a><br/></td></tr>
<tr class="separator:ga75a6f7f12d78cdad69940f49e27811d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3cff342e0039664d80d62412e1494341"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga3cff342e0039664d80d62412e1494341">XNVM_EFUSE_SYSMONPSV_TIMEOUT</a>&#160;&#160;&#160;(100000U)</td></tr>
<tr class="memdesc:ga3cff342e0039664d80d62412e1494341"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fraction multiplier value.  <a href="group__xnvm__efuse__server__apis.html#ga3cff342e0039664d80d62412e1494341">More...</a><br/></td></tr>
<tr class="separator:ga3cff342e0039664d80d62412e1494341"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad803c38ffc552fe2bc5f6c5f8e6dab70"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad803c38ffc552fe2bc5f6c5f8e6dab70"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>XNVM_EFUSE_FRACTION_MUL_VALUE</b>&#160;&#160;&#160;(1000000U)</td></tr>
<tr class="separator:gad803c38ffc552fe2bc5f6c5f8e6dab70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaee59a3237bc83a9ad128f1591dce1c41"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gaee59a3237bc83a9ad128f1591dce1c41">XNVM_NUM_OF_CACHE_ADDR_PER_PAGE</a>&#160;&#160;&#160;(0x400U)</td></tr>
<tr class="memdesc:gaee59a3237bc83a9ad128f1591dce1c41"><td class="mdescLeft">&#160;</td><td class="mdescRight">PPK3 and PPK4 enable bits mask.  <a href="group__xnvm__efuse__server__apis.html#gaee59a3237bc83a9ad128f1591dce1c41">More...</a><br/></td></tr>
<tr class="separator:gaee59a3237bc83a9ad128f1591dce1c41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa3075bb60cfbd57974b89d48093f1796"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gaa3075bb60cfbd57974b89d48093f1796">XNVM_EFUSE_PPK_3_PPK_4_ENABLE</a>&#160;&#160;&#160;(0x00030000U)</td></tr>
<tr class="memdesc:gaa3075bb60cfbd57974b89d48093f1796"><td class="mdescLeft">&#160;</td><td class="mdescRight">Total number of PPKS.  <a href="group__xnvm__efuse__server__apis.html#gaa3075bb60cfbd57974b89d48093f1796">More...</a><br/></td></tr>
<tr class="separator:gaa3075bb60cfbd57974b89d48093f1796"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga48e1523f29e7f9a6ab1cf8f39cbda5d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga48e1523f29e7f9a6ab1cf8f39cbda5d2"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>XNVM_EFUSE_NUM_OF_PPKS</b>&#160;&#160;&#160;(3U)</td></tr>
<tr class="separator:ga48e1523f29e7f9a6ab1cf8f39cbda5d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gace7f68b8a561aa12aed7ca066b9e28b2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gace7f68b8a561aa12aed7ca066b9e28b2">XNvm_EfuseWrite</a> (const <a class="el" href="struct_x_nvm___efuse_data.html">XNvm_EfuseData</a> *WriteNvm)</td></tr>
<tr class="memdesc:gace7f68b8a561aa12aed7ca066b9e28b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used as a wrapper to program below eFuses AES key User key 0 User key 1 PPK0/PPK1/PPK2/PPK3/PPK4 hash IVs Revocation Ids User Fuses Secure and Control bits.  <a href="group__xnvm__efuse__server__apis.html#gace7f68b8a561aa12aed7ca066b9e28b2">More...</a><br/></td></tr>
<tr class="separator:gace7f68b8a561aa12aed7ca066b9e28b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf0e51beac90b7d5fe2d18c9ef25bc2ea"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gaf0e51beac90b7d5fe2d18c9ef25bc2ea">XNvm_EfuseReadSecCtrlBits</a> (XNvm_EfuseSecCtrlBits *SecCtrlBits)</td></tr>
<tr class="memdesc:gaf0e51beac90b7d5fe2d18c9ef25bc2ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to read the eFUSE secure control bits from cache.  <a href="group__xnvm__efuse__server__apis.html#gaf0e51beac90b7d5fe2d18c9ef25bc2ea">More...</a><br/></td></tr>
<tr class="separator:gaf0e51beac90b7d5fe2d18c9ef25bc2ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac805987f2e5adffda160b2027ff46ed6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gac805987f2e5adffda160b2027ff46ed6">XNvm_EfuseReadSecMisc1Bits</a> (XNvm_EfuseSecMisc1Bits *SecMisc1Bits)</td></tr>
<tr class="memdesc:gac805987f2e5adffda160b2027ff46ed6"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to read the security miscellaneous1 bits from cache.  <a href="group__xnvm__efuse__server__apis.html#gac805987f2e5adffda160b2027ff46ed6">More...</a><br/></td></tr>
<tr class="separator:gac805987f2e5adffda160b2027ff46ed6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga50174985a13b2facd6fd35fea6637f8c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga50174985a13b2facd6fd35fea6637f8c">XNvm_EfuseReadBootEnvCtrlBits</a> (XNvm_EfuseBootEnvCtrlBits *BootEnvCtrlBits)</td></tr>
<tr class="memdesc:ga50174985a13b2facd6fd35fea6637f8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function reads the Boot Environmental Control bits from cache.  <a href="group__xnvm__efuse__server__apis.html#ga50174985a13b2facd6fd35fea6637f8c">More...</a><br/></td></tr>
<tr class="separator:ga50174985a13b2facd6fd35fea6637f8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga420873a40f9a6f98373837d2fed08bb6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga420873a40f9a6f98373837d2fed08bb6">XNvm_EfuseWritePuf</a> (const <a class="el" href="struct_x_nvm___efuse_puf_hd.html">XNvm_EfusePufHd</a> *PufHelperData)</td></tr>
<tr class="memdesc:ga420873a40f9a6f98373837d2fed08bb6"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function programs the eFUSEs with the PUF helper data.  <a href="group__xnvm__efuse__server__apis.html#ga420873a40f9a6f98373837d2fed08bb6">More...</a><br/></td></tr>
<tr class="separator:ga420873a40f9a6f98373837d2fed08bb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4632d36b5d828148cb6cdec52d6310ff"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga4632d36b5d828148cb6cdec52d6310ff">XNvm_EfuseReadPufSecCtrlBits</a> (XNvm_EfusePufSecCtrlBits *PufSecCtrlBits)</td></tr>
<tr class="memdesc:ga4632d36b5d828148cb6cdec52d6310ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to read the Puf eFUSE secure control bits from cache.  <a href="group__xnvm__efuse__server__apis.html#ga4632d36b5d828148cb6cdec52d6310ff">More...</a><br/></td></tr>
<tr class="separator:ga4632d36b5d828148cb6cdec52d6310ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga41a3f8903c46968528ef035b329fb58f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga41a3f8903c46968528ef035b329fb58f">XNvm_EfuseReadMiscCtrlBits</a> (XNvm_EfuseMiscCtrlBits *MiscCtrlBits)</td></tr>
<tr class="memdesc:ga41a3f8903c46968528ef035b329fb58f"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to read the miscellaneous eFUSE control bits from cache.  <a href="group__xnvm__efuse__server__apis.html#ga41a3f8903c46968528ef035b329fb58f">More...</a><br/></td></tr>
<tr class="separator:ga41a3f8903c46968528ef035b329fb58f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4751c17a98da016fea4e701d67d5154b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga4751c17a98da016fea4e701d67d5154b">XNvm_EfuseWriteIVs</a> (XNvm_EfuseIvs *EfuseIv, XSysMonPsv *SysMonInstPtr)</td></tr>
<tr class="memdesc:ga4751c17a98da016fea4e701d67d5154b"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function programs the eFUSEs with the IV.  <a href="group__xnvm__efuse__server__apis.html#ga4751c17a98da016fea4e701d67d5154b">More...</a><br/></td></tr>
<tr class="separator:ga4751c17a98da016fea4e701d67d5154b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaac535d6758d3eccb3407e6d30acad999"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gaac535d6758d3eccb3407e6d30acad999">XNvm_EfuseReadIv</a> (XNvm_Iv *EfuseIv, XNvm_IvType IvType)</td></tr>
<tr class="memdesc:gaac535d6758d3eccb3407e6d30acad999"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to read IV eFUSE bits from cache.  <a href="group__xnvm__efuse__server__apis.html#gaac535d6758d3eccb3407e6d30acad999">More...</a><br/></td></tr>
<tr class="separator:gaac535d6758d3eccb3407e6d30acad999"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0c0ae462f443cc003504d85d719d816f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga0c0ae462f443cc003504d85d719d816f">XNvm_EfuseReadPuf</a> (<a class="el" href="struct_x_nvm___efuse_puf_hd.html">XNvm_EfusePufHd</a> *PufHelperData)</td></tr>
<tr class="memdesc:ga0c0ae462f443cc003504d85d719d816f"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function reads the PUF helper data from eFUSE cache.  <a href="group__xnvm__efuse__server__apis.html#ga0c0ae462f443cc003504d85d719d816f">More...</a><br/></td></tr>
<tr class="separator:ga0c0ae462f443cc003504d85d719d816f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafe7f7c2ced18e824970eaa2c509d3263"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gafe7f7c2ced18e824970eaa2c509d3263">XNvm_EfuseReadDna</a> (XNvm_Dna *EfuseDna)</td></tr>
<tr class="memdesc:gafe7f7c2ced18e824970eaa2c509d3263"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to read Dna eFUSE bits from cache.  <a href="group__xnvm__efuse__server__apis.html#gafe7f7c2ced18e824970eaa2c509d3263">More...</a><br/></td></tr>
<tr class="separator:gafe7f7c2ced18e824970eaa2c509d3263"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf25ea1ce6b8a6f3971b341861f66a4d6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gaf25ea1ce6b8a6f3971b341861f66a4d6">XNvm_EfuseReadDecOnly</a> (u32 *DecOnly)</td></tr>
<tr class="memdesc:gaf25ea1ce6b8a6f3971b341861f66a4d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to read DecEfuseOnly eFUSE bits from cache.  <a href="group__xnvm__efuse__server__apis.html#gaf25ea1ce6b8a6f3971b341861f66a4d6">More...</a><br/></td></tr>
<tr class="separator:gaf25ea1ce6b8a6f3971b341861f66a4d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa94fa3a1bbb5fcad4fc6a8c9822f55f0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gaa94fa3a1bbb5fcad4fc6a8c9822f55f0">XNvm_EfuseReadPpkHash</a> (XNvm_PpkHash *EfusePpk, XNvm_PpkType PpkType)</td></tr>
<tr class="memdesc:gaa94fa3a1bbb5fcad4fc6a8c9822f55f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function reads the Ppk Hash from eFUSE cache.  <a href="group__xnvm__efuse__server__apis.html#gaa94fa3a1bbb5fcad4fc6a8c9822f55f0">More...</a><br/></td></tr>
<tr class="separator:gaa94fa3a1bbb5fcad4fc6a8c9822f55f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac25f8f0b2dc9d17535f36f547b398f5a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gac25f8f0b2dc9d17535f36f547b398f5a">XNvm_EfuseRevokePpk</a> (XNvm_PpkType PpkRevoke, XSysMonPsv *SysMonInstPtr)</td></tr>
<tr class="memdesc:gac25f8f0b2dc9d17535f36f547b398f5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function revokes the Ppk.  <a href="group__xnvm__efuse__server__apis.html#gac25f8f0b2dc9d17535f36f547b398f5a">More...</a><br/></td></tr>
<tr class="separator:gac25f8f0b2dc9d17535f36f547b398f5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga46bc38f1599f488fabc6c4fc499336e0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga46bc38f1599f488fabc6c4fc499336e0">XNvm_EfuseReadRevocationId</a> (u32 *RevokeFusePtr, XNvm_RevocationId RevokeFuseNum)</td></tr>
<tr class="memdesc:ga46bc38f1599f488fabc6c4fc499336e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function reads the Revocation Fuse from eFUSE cache.  <a href="group__xnvm__efuse__server__apis.html#ga46bc38f1599f488fabc6c4fc499336e0">More...</a><br/></td></tr>
<tr class="separator:ga46bc38f1599f488fabc6c4fc499336e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:ga4fa477e5473cdcf0220dad1b33ed9a39"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga4fa477e5473cdcf0220dad1b33ed9a39">XNvm_EfuseWriteRevocationId</a> (u32 RevokeId, XSysMonPsv *SysMonInstPtr)</td></tr>
<tr class="memdesc:ga4fa477e5473cdcf0220dad1b33ed9a39"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function writes Revocation eFuses.  <a href="group__xnvm__efuse__server__apis.html#ga4fa477e5473cdcf0220dad1b33ed9a39">More...</a><br/></td></tr>
<tr class="separator:ga4fa477e5473cdcf0220dad1b33ed9a39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac8bca3f1faba5e060ba174bad3908ca2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gac8bca3f1faba5e060ba174bad3908ca2">XNvm_EfuseReadOffchipRevokeId</a> (u32 *OffchipIdPtr, XNvm_OffchipId OffchipIdNum)</td></tr>
<tr class="memdesc:gac8bca3f1faba5e060ba174bad3908ca2"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function reads the Offchip revoke eFuse value from eFUSE cache.  <a href="group__xnvm__efuse__server__apis.html#gac8bca3f1faba5e060ba174bad3908ca2">More...</a><br/></td></tr>
<tr class="separator:gac8bca3f1faba5e060ba174bad3908ca2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga205ea0a6c23f71becd6b927e4c7645de"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga205ea0a6c23f71becd6b927e4c7645de">XNvm_EfuseReadUserFuses</a> (const <a class="el" href="struct_x_nvm___efuse_user_data.html">XNvm_EfuseUserData</a> *UserFusesData)</td></tr>
<tr class="memdesc:ga205ea0a6c23f71becd6b927e4c7645de"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function reads User eFuses from Cache.  <a href="group__xnvm__efuse__server__apis.html#ga205ea0a6c23f71becd6b927e4c7645de">More...</a><br/></td></tr>
<tr class="separator:ga205ea0a6c23f71becd6b927e4c7645de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga26145c29a3bf9f92c4cee3878a4abef2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#ga26145c29a3bf9f92c4cee3878a4abef2">XNvm_EfuseWriteUserFuses</a> (<a class="el" href="struct_x_nvm___efuse_user_data.html">XNvm_EfuseUserData</a> *WriteUserFuses, XSysMonPsv *SysMonInstPtr)</td></tr>
<tr class="memdesc:ga26145c29a3bf9f92c4cee3878a4abef2"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function Programs User eFuses.  <a href="group__xnvm__efuse__server__apis.html#ga26145c29a3bf9f92c4cee3878a4abef2">More...</a><br/></td></tr>
<tr class="separator:ga26145c29a3bf9f92c4cee3878a4abef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafd870ce6c862eea492a4ec10a06e539e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xnvm__efuse__server__apis.html#gafd870ce6c862eea492a4ec10a06e539e">XNvm_EfuseReadCacheRange</a> (u32 StartRow, u8 RowCount, u32 *RowData)</td></tr>
<tr class="memdesc:gafd870ce6c862eea492a4ec10a06e539e"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function reads 32-bit rows from eFUSE cache.  <a href="group__xnvm__efuse__server__apis.html#gafd870ce6c862eea492a4ec10a06e539e">More...</a><br/></td></tr>
<tr class="separator:gafd870ce6c862eea492a4ec10a06e539e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
